package com.blog.controller;

import com.blog.annotation.RequiredLog;
import com.blog.entity.Product;
import com.blog.mapper.ProductMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpSession;
import java.io.File;
import java.util.Date;
import java.util.List;

/**
 * 处理商品相关业务的Controller
 *
 * @author 黄嘉强
 */
@RestController
public class ProductController {

    @Autowired
    ProductMapper mapper;

    /**
     * 前端查询所有商品信息
     * @return 商品信息集合
     */
    @RequestMapping("/product/list/index")
    public List<Product> selectIndex(){
        return mapper.selectIndex();
    }

    /**
     * 基于商品分类查询商品信息
     * @param cid 商品分类id
     * @return 商品信息集合
     */
    @RequestMapping("/product/selectByCid/{cid}")
    public List<Product> selectByCid(@PathVariable("cid")int cid){
        return mapper.selectByCategoryId(cid);
    }

    /**
     * 基于商品名称模糊查询商品信息
     * @param wd 模糊查询的字段
     * @return 查询到的商品信息集合
     */
    @RequestMapping("/product/selectByWd/{wd}")
    public List<Product> selectByWd(@PathVariable("wd")String wd){
        return mapper.selectByWd(wd);
    }

    /**
     * 查询销量排名前6的商品
     * @return
     */
    @RequestMapping("/product/list/top")
    public List<Product> selectTop(){
        List<Product> list = mapper.selectTop();
        // 将长度超过5的商品名称改为xxx........
        for (Product product : list) {
            if (product.getTitle().length() > 5) {
                String title = product.getTitle().substring(0, 3) + "...";
                product.setTitle(title);
            }
        }
        return list;
    }

    //========================后端==============================

    /**
     * 后端查询所有商品信息
     * @return 商品信息集合
     */
    @RequestMapping("/product/list/admin")
    public List<Product> selectAdmin(){
        return mapper.selectAdmin();
    }

    /**
     * 添加新的商品信息
     * @param product 商品类
     */
    @RequestMapping("/product/insert")
    public void insert(@RequestBody Product product){
        product.setCreated(new Date());
        mapper.insert(product);
    }

    /**
     * 基于商品id删除商品
     * @param id 要删除的商品的id
     */
    @RequestMapping("/product/delete/{id}")
    public void deleteById(@PathVariable("id") int id) {
        String url = mapper.selectUrlById(id);
        String filePath = "D:/轻工学院/大三下/19级实训/项目/hello_Spring/file";
        File file = new File(filePath, url);
        // 如果文件存在，删除文件
        if (file.exists()) {
            file.delete();
        }
        mapper.deleteById(id);
    }

    /**
     * 基于id查询商品信息
     * @param id
     * @param session
     * @return 查询到的商品信息
     */
    @RequiredLog(operation = "查看商品详情")
    @RequestMapping("/product/selectById/{id}")
    public Product selectById(@PathVariable("id") int id){
        System.out.println("id = " + id);
        mapper.updateViewCount(id);
        return mapper.selectById(id);
    }

}
